home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Art / I / IMAGE 1.45.cpt / Macros / Image Macros < prev    next >
Text File  |  1992-07-15  |  4KB  |  172 lines

  1. {
  2. This file contains contains example macros written in Image's
  3. Pascal-like programming language. These macros will automatically
  4. be loaded when Image is launched as long as this file is in the same folder
  5. as Image, or in the System folder, and it has the name 'Image Macros'.
  6. }
  7.  
  8. macro 'Measure [1]'       begin Measure end;
  9. macro 'Show Results [2]'  begin ShowResults end;
  10. macro 'Reset [3]'         begin ResetCounters end;
  11. macro 'Copy Results [4]'  begin CopyResults end;
  12. macro 'Start Capture [G]' begin StartCapturing end;
  13.  
  14.  
  15. Macro 'Draw Arrow [A]'
  16. {Draws an arrow based on the current straight line selection.}
  17. var
  18.   size,angle,dx,dy,pi,theta:real;
  19.   x1,y1,x2,y2,LineWidth,width,height:integer;
  20. begin
  21.   size:=12;  {pixels}
  22.   angle:=20; {degrees}
  23.   angle:=90; {degrees}
  24.   pi:=3.14159;
  25.   GetLine(x1,y1,x2,y2,LineWidth);
  26.   if x1<0 then begin
  27.     PutMessage('Use the line tool(straight) to select a line first.');
  28.     exit;
  29.   end;
  30.   MoveTo(x1,y1);
  31.   LineTo(x2,y2);
  32.   KillRoi;
  33.   GetPicSize(width,height);
  34.   y1:=height-y1;
  35.   y2:=height-y2;
  36.   if LineWidth>1 then size:=size*LineWidth*0.5;
  37.   angle:=(angle/180)*pi;
  38.   dx:=x1-x2;
  39.   dy:=y1-y2;
  40.   if dx=0 then begin
  41.     if dy>=0 then theta:=pi/2 else theta:=3/2*pi
  42.   end else begin
  43.     theta:=arctan(dy/dx);
  44.     if dx<0 then theta:=theta+pi;
  45.   end;
  46.   moveto(x2,height-y2);
  47.   lineto(x2+size*cos(theta+angle),height-(y2+size*sin(theta+angle)));
  48.   moveto(x2,height-y2);
  49.   lineto(x2+size*cos(theta-angle),height-(y2+size*sin(theta-angle)));
  50. end;
  51.  
  52.  
  53. macro 'Print All';
  54. {Use SetOption, which turns off halftoning, for better quality}
  55. {(and faster) printing of binary pictures.}
  56. var
  57.   i:integer;
  58. begin
  59.   for i:=1 to nPics do begin
  60.      SelectPic(i);
  61.      {SetOption;}
  62.      Print;
  63.   end;
  64. end;
  65.  
  66.  
  67. macro 'Clear Outside'
  68.  {Erase region outside current selection to background color.}
  69. begin
  70.   Copy;
  71.   SelectAll;
  72.   Clear;
  73.   RestoreRoi;
  74.   Paste;
  75.   KillRoi;
  76. end;
  77.  
  78.  
  79. macro 'Make Bas-relief'
  80. begin
  81.   Duplicate('Bas-relief');
  82.   SelectAll;
  83.   {SetOption; Smooth;}
  84.   Copy;
  85.   MoveRoi(-1,-1);  {Try MoveRoi(1,1) for a different effect.}
  86.   Paste;
  87.   Subtract;
  88.   EnhanceContrast;
  89.   ApplyLUT;
  90. end;
  91.  
  92.  
  93. macro '(-' begin end;
  94.  
  95.  
  96. macro 'Make Step Function';
  97. {Generates a grayscale step function within the current selection.}
  98. var
  99.   left,top,width,height,nSteps,StepSize,i,x:integer;
  100.   value:real;
  101. begin
  102.   GetRoi(left,top,Width,Height);
  103.   if width=0 then begin
  104.     PutMessage('This macro requires a rectangular selection.');
  105.     Exit;
  106.   end;
  107.   SaveState;
  108.   nSteps:=GetNumber('Number of steps',16);
  109.   value:=255;
  110.   StepSize:=width div nSteps;
  111.   x:=left;
  112.   for i:=1 to nSteps do begin
  113.     MakeRoi(x,top,StepSize,Height);
  114.     SetForeground(round(value));
  115.     fill;
  116.     x:=x+StepSize;
  117.     value:=value-256/nSteps;
  118.   end;
  119.   KillRoi;
  120.   RestoreState;
  121. end;
  122.  
  123.  
  124. macro 'Random Ovals';
  125. var
  126.   PicWidth,PicHeight,hloc,vloc,width,height:real;
  127. begin
  128.   SaveState;
  129.   SetPalette('Spectrum');
  130.   MakeNewWindow('Random Ovals');
  131.   GetPicSize(PicWidth,PicHeight);
  132.   repeat
  133.     hloc:=width*random;
  134.     vloc:=height*random;
  135.     width:=(PicWidth-hloc)*random;
  136.     height:=(PicHeight-vloc)*random;
  137.     MakeOvalRoi(hloc,vloc,width,height);
  138.     SetForeground(255*random);
  139.     fill;
  140.   until Button;
  141.   KillRoi;
  142.   RestoreState;
  143. end;
  144.  
  145.  
  146. macro 'Draw Ball';
  147. var
  148.   width,height,n,i,color,diam,nSteps:integer;
  149. begin
  150.   SaveState;
  151.   nSteps:=64;
  152.   SetPalette('Spectrum');
  153.   SetBackground(255); {Black}
  154.   MakeNewWindow('Ball');
  155.   GetPicSize(Width,Height);
  156.   if width>height
  157.     then diam:=height
  158.     else diam:=width;
  159.   color:=1;
  160.   MakeOvalRoi((width-diam)/2,(height-diam)/2,diam,diam);
  161.   for i:=1 to nSteps do begin
  162.     InsetRoi(round(diam/(3*nSteps)));
  163.     SetForeground(color);
  164.     fill;
  165.     color:=color+round(256/nSteps);
  166.     if color>254 then color:=254;
  167.   end;
  168.   KillRoi;
  169.   RestoreState;
  170. end;
  171.  
  172.